[문법] [PHP5] __get 메소드의 활용 :: PHP5의 추가된 사항을 올리는 곳입니다.[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

PHP5의 추가된 사항을 올리는 곳입니다.
[1]
등록일:2007-10-10 22:55:33 (0%)
작성자:
제목:[문법] [PHP5] __get 메소드의 활용
이미  다른  자료에  오버로딩  메소드에  대해  언급  되었지만  조금  더  쉽게  접근  할  수  있도록  간략한  소스와  설명을  곁들일까  합니다.  

__get  메소드  (__set  ,  __call  메소드  포함)  는  접근하려는  멤버  변수나  메소드가  클래스내에  존재  하지  않을때  실행  됩니다.  

.dbConfig.ini  파일의  내용  
------------------------------------------  
dbType  =  'MySQL'  
dbHost  =  'Localhost'  
dbUser  =  'UserName'  
dbpasswd  =  'MyPassword'  
dbDefault  =  'Users';  
--------------------------------------------  


class  db  
{  
    function  __construct()    //  생성자  
    {    
        $this->selectDB();  //  기본  DB  에  연결함  
    }  
    
    function  __get($var)  //  멤버변수가  존재  하지  않을때  실행됨  
    {  
            switch  ($var)  
            {  
                case  'Config'  :  return  @parse_ini_file('.dbConfig.ini');  break;  
                case  'Connection'  :  return  $this->dbConnect();  break;  
                ....  
        }  
    }  

    function  dbConnect()  
    {  
        switch  ($this->Config[dbType])  //  이곳은  실제로  __get  메소드가  실행되지  않음  
        {  
            case  'MySQL'  :  
            return  mysql_connect($this->Config[dbHost],$this->Config[dbUser],$this->Config[dbPassword]);  
            break;  

        case  'Oracle'  :  
        //    return  오라클  연결  
        break;  
        
        case  'postgre'  :  
        ......  


    }  
    
    function  selectDB()  //  데이터  베이스를  선택함  
    {  
            switch  ($this->Config[dbType])  //  __get  메소드가  실행  됨  
        {  
                case  'MySQL'  :  
                mysql_select_db($this->Config[dbDefault],$this->Connection));  
            //    $this->Connection  에  대해  __get  메소드가  실행됨  
                break;  
            ......  
        }  
}  

$db  =  new  db();  

---------------------------------------------------------------------------------------------  

멤버  변수가  한번  생성  되면  다시  __get  메소드가  실행되지  않으므로  불필요한  File  Access  는  발생하지  않을것이고  관련  클래스  내에서  해당  멤버  변수를  언제든지  재사용  가능합니다.  

또한  예제에서  보시는바와  같이  여러종류의    DBMS  에  대해  Adapter  Pattern  을  적용시킬  수  있습니다.  

객체지향적인  프로그래밍에서  멤버  함수에게  어떠한  기능을  부여한다면  어떤  경우(외,  내부적인  영향)  에  있어서도  실행  되도록  하는것이  중요한데  그때  __get  메소드가  상당히  중요한  역할을  담당하는것  같습니다.  

출처  :  http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=49657&sca=&sfl=wr_subject%7C%7Cwr_content&stx=php5&sop=and&page=3
[본문링크] [문법] [PHP5] __get 메소드의 활용
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=1081
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.